국민 60% “우리나라 당면과제는 저출산·고령화” https://newsis.com/view/?id=NISX20210825_0001559720&cID=13001&pID=13000
노인이란 노화가 진행되면서 신체적, 인지적, 심리적, 사회적 제측면의 능력과 기능이 저하되어 개인의 자기 유기기능과 사회적 역할 기능이 약화되고 있는 자로서 60세 이상인 자를 말한다.
노인 문제에 관련해 많은 기삿거리들이 존재하지만, 노인 문제와 관련한 연구들을 간략하게 살펴보고 어떠한 문제들과 관련이 있는지 살펴보기 위해 google.scholar (https://scholar.google.com)에 노인이라 검색하였다. 그 후에, 각종 연구들을 바탕으로 노인과 관련한 연구 결과에 대한 크롤링 결과는 다음과 같다.
## [1] "한국사회에서 노인인구의 증가와 더불어 지난 몇 년간 노인자살자의 수와 그 자살율이 지속적으로 증가하고 있다는 사실은 노인의 삶의 질이라는 측면에서나 이와 관련되는 문제들이 유발하는 사회적 비용의 측면에서 중요한 노인 복지적 대안이 요구되는 반면, 이에 대한 관심과 연구는 부족한 실정이다."
## [2] "노인보건정책 수립시, 독거노인의 특성을 고려하여, 개별화되고 전문화된 노인건강 관리프로그램을 적용하여 건강증진사업을 시행하여야 할 것이다."
## [3] "노인의 생활만족도는 노인의 전반적인 삶의 질을 파악할 수 있다. 우리사회에서 독거노인은 사회복지 자원에서 결핍의 대상이다."
이를 바탕으로 노인이라는 단어와 다른 연관성을 살펴보기 위해 그림으로서 이를 살펴보면 다음과 같다.
노인이라는 단어는 외로움, 사회와 관련이 있는 만큼, 이를 기반으로 성북구의 노인분들의 특징을 본 보고서에서 살펴보고자 한다.
이를 위해 사용할 R library는 아래와 같다.
XML (Temple Lang 2020)
stringr (Wickham 2019)
gridExtra (Auguie 2017)
KoNLP (Jeon 2016)
qgraph (Epskamp et al. 2012)
tm (Feinerer, Hornik, and Meyer 2008)
dplyr (Wickham et al. 2021)
ggplot2 (Wickham 2016)
wordcloud (Fellows 2018)
plotly (Sievert 2020)
먼저 성북구 내의 노인 복지 시설을 지도위에 나타내기 위해 성북구 지도를 살펴보자. 해당 데이터는 통계청 자료 (https://sgis.kostat.go.kr/view/index)을 이용하였다.
sungbukgu <- read.csv("sungbukgu_gu.csv", fileEncoding = "cp949")
sungbukgu.dong <- read.csv("sungbukgu_dong.csv", fileEncoding = "cp949")
region.text <- read.csv("sungbukgu_text.csv", fileEncoding = "cp949")
Area <- ggplot(data = sungbukgu.dong,
mapping = aes(x = long,
y = lat,
group = group)) +
geom_polygon(fill = "white",
color = "black", size = 0.1) +
geom_polygon(data = sungbukgu,
mapping = aes(x = long,
y = lat,
group = group),
fill = "NA",
color = "black", size = 0.2) +
theme(panel.background = element_blank(),
axis.title = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
plot.title = element_text(hjust = 0.5,
face = 'bold'))
Area +
labs(title = "성북구 지역 데이터") +
annotate("text",
x = as.numeric(region.text$x),
y = as.numeric(region.text$y),
label = as.character(region.text$ADM_DR_NM),
size = 2, col = "black")
성북구는 행정동 상으로 성북동, 삼선동, 동선동, 돈암1동, 돈암2동, 안암동, 보문동, 정릉1동, 정릉2동, 정릉3동, 정릉4동, 길음1동, 길음2동, 종암동, 월곡1동, 월곡2동, 장위1동, 장위2동, 장위3동, 석관동으로 총 20개의 행정동으로 구성되어 있다. 또한 성북구의 인구 수는 43만 2,815명이고, 2011년(48.5만명) 이후로 감소하는 추세이다.
이를 바탕으로 각 동별 노인 인구 및 복지시설에 대한 그림을 그리기 위해 데이터들은 공공데이터 포털 (https://www.data.go.kr/data/)에서 2020년 서울시 독거노인 현황 (연령별/동별) 통계 가져왔다. 해당 데이터의 구성은 다음과 같다.
data1 <- read.csv("서울특별시_성북구_노인복지시설_현황_20210101.csv",fileEncoding = "cp949")
colnames(data1) <- c(colnames(data1)[-9], "ADM_DR_NM")
head(data1)
## 구분 시설명
## 1 노인여가복지시설 성북노인종합복지관
## 2 노인여가복지시설 성북구립 석관실버복지센터
## 3 노인여가복지시설 성북구립 정릉실버복지센터
## 4 노인여가복지시설 성북구립 장위실버복지센터
## 5 노인여가복지시설 성북구립 삼선실버복지센터
## 6 노인여가복지시설 성북구립 상월곡실버복지센터
## 주소 전화번호
## 1 서울특별시 성북구 종암로15길 10(종암동) 02-929-7950
## 2 서울특별시 성북구 화랑로 32길 88(석관동) 02-957-9923
## 3 서울특별시 성북구 솔샘로 8(정릉동) 02-916-0204
## 4 서울특별시 성북구 한천로 708(장위동) 02-913-3369
## 5 서울특별시 성북구 삼선교로 18길 41(삼선동) 02-6925-4112
## 6 서울특별시 성북구 화랑로18길 6(상월곡동) 02-963-1082
## 운영주체 기준일자 위도 경도 ADM_DR_NM
## 1 사회복지법인 진각복지재단 2021-01-01 37.59779 127.0344 종암동
## 2 불교총지종 사회복지재단 2021-01-01 37.60671 127.0582 석관동
## 3 사회복지법인 일광복지재단 2021-01-01 37.60824 127.0047 정릉2동
## 4 사단법인 다원문화복지재단 2021-01-01 37.61283 127.0561 장위2동
## 5 사단법인 다원문화복지재단 2021-01-01 37.61283 127.0561 삼선동
## 6 사회복지법인 일광복지재단 2021-01-01 37.60585 127.0482 월곡2동
data2 <- data.table::fread("report.txt", encoding = "UTF-8")
data2 <- as.data.frame(data2[data2$자치구 == "성북구",-c(1:2)][-1,])
colnames(data2) <- c("ADM_DR_NM", "합계_계", "합계_65_79", "합계_80",
"기초수급_계", "기초수급_65_79", "기초수급_80",
"저소득_계", "저소득_65_79", "저소득_80",
"일반_계", "일반_65_79", "일반_80")
data2[,-1] <- sapply(data2[,-1], function(x) as.numeric(gsub(",","",x)))
head(data2)
## ADM_DR_NM 합계_계 합계_65_79 합계_80 기초수급_계 기초수급_65_79 기초수급_80
## 1 돈암1동 569 430 139 154 105 49
## 2 돈암2동 497 343 154 107 63 44
## 3 안암동 580 426 154 117 90 27
## 4 보문동 597 440 157 126 77 49
## 5 정릉1동 553 424 129 111 74 37
## 6 정릉2동 877 674 203 170 115 55
## 저소득_계 저소득_65_79 저소득_80 일반_계 일반_65_79 일반_80
## 1 54 39 15 361 286 75
## 2 30 16 14 360 264 96
## 3 45 34 11 418 302 116
## 4 48 35 13 423 328 95
## 5 32 18 14 410 332 78
## 6 54 47 7 653 512 141
해당 데이터를 위의 지도와 결합하고, 그림을 그리면 다음과 같다.
point.df <- left_join(sungbukgu.dong, data1, by = "ADM_DR_NM")
region.df <- left_join(sungbukgu.dong, data2, by = "ADM_DR_NM")
p <- Area +
geom_polygon(data = region.df,
aes(group = group, fill = 일반_계), color = "black", size = 0.02) +
scale_fill_gradient(low = "yellow", high = "brown", na.value = NA) +
annotate("text",
x = as.numeric(region.text$x),
y = as.numeric(region.text$y),
label = as.character(region.text$ADM_DR_NM),
size = 2, col = "black") +
geom_point(data = na.omit(point.df),
aes(x = 경도, y = 위도, col = 구분), size = 2) +
labs(title = "성북구 노인 및 복지시설")
ggplotly(p)
성북구 노인 복지시설 중 재가노인복지시설과 노인의료복지시설이 상대적으로 많은 것으로 보인다.
보다 큰 비교를 위해 연령대의 구분으로 그림을 그리면 다음과 같다.
grid.arrange(Area +
geom_polygon(data = region.df,
aes(group = group, fill = 일반_65_79), color = "black", size = 0.02) +
scale_fill_gradient(low = "yellow", high = "brown", na.value = NA) +
annotate("text",
x = as.numeric(region.text$x),
y = as.numeric(region.text$y),
label = as.character(region.text$ADM_DR_NM),
size = 2, col = "black") +
geom_point(data = na.omit(point.df),
aes(x = 경도, y = 위도), col = "red", size = 2) +
labs(title = "성북구 60~79세 노인 및 복지시설"),
Area +
geom_polygon(data = region.df,
aes(group = group, fill = 일반_80), color = "black", size = 0.02) +
scale_fill_gradient(low = "yellow", high = "brown", na.value = NA) +
annotate("text",
x = as.numeric(region.text$x),
y = as.numeric(region.text$y),
label = as.character(region.text$ADM_DR_NM),
size = 2, col = "black") +
geom_point(data = na.omit(point.df),
aes(x = 경도, y = 위도), col = "red", size = 2) +
labs(title = "성북구 80세 이상 노인 및 복지시설"), ncol = 2)
60~79세 노인인구 수는 석관동과 정릉 4동에서 많은 것에 비해 복지시설이 적은 것을 확인할 수 있다. 이는 충분한 복지시설이 확충되지 않았음을 의미한다. 반면에 80세 이상 노인 인구 수는 종암동이 가장 많으며 그에 맞게 복지시설 또한 3개가 존재한다.
지역적인 특징을 지도로 보는 것은 한눈에 시각화 할 수 있다는 장점이 존재하지만, 정량적인 지표로 제시할 수 없다는 점이 단점이다. 다시말해, 보는이에 따라 해석을 달리 할 수 있기 때문에 이와 다르게 정량적인 지표로서 노인 문제에 대해 제언해야한다. 따라서 다음의 3가지 지표를 통해 제언하고자 한다.
유년부양비 : 유소년인구(0~14세) 대 생산가능인구(15~64세)의 비율
노년부양비 : 고령인구(65세 이상) 대 생산가능인구(15~64세)의 비율
노령화지수 : 고령인구(65세 이상) 대 유소년 인구(0~14세)의 비율
이 수치들을 계산하기 위해 서울시 주민등록인구 (연령별/동별) 통계를 사용한다.
index <- seq(1, 60, by = 3)
df.2020 <- as.data.frame(data.table::fread("2020.txt", encoding = "UTF-8"))
df.2020 <- df.2020[df.2020$자치구 == "성북구",][-c(1:3),][index,-c(2, 4, 5)]
df.2020[,-c(1,2)] <- sapply(df.2020[,-c(1,2)], function(x) as.numeric(gsub(",","",x)))
2020년을 기준으로 해당 수치들을 계산해보자.
child <- df.2020 %>%
group_by(동) %>%
summarise("y" = `0~4세` + `5~9세` + `10~14세`)
normal <- df.2020 %>%
group_by(동) %>%
summarise("y" = `15~19세` + `20~24세` + `25~29세` + `30~34세` + `35~39세` +
`40~44세` + `45~49세` + `50~54세` + `55~59세` + `60~64세`)
elder <- df.2020 %>%
group_by(동) %>%
summarise("y" = `65~69세` + `70~74세` + `75~79세` + `80~84세` +
`85~89세` + `90~94세` + `95~99세` + `100세 이상+`)
stat1 <- child$y/normal$y*100
stat2 <- elder$y/normal$y*100
stat3 <- elder$y/child$y*100
stat.df <- data.frame("ADM_DR_NM" = child$동, "유년부양비" = stat1,
"노년부양비" = stat2, "노령화지수" = stat3)
adj.stat.df <- data.frame(reshape::melt(stat.df, "ADM_DR_NM"),
"group" = rep(c(1, 2, 3), each = nrow(stat.df)))
colnames(adj.stat.df) <- c("ADM_DR_NM", "Type", "value", "group")
p <- ggplot(adj.stat.df, aes(x = ADM_DR_NM,
y = value,
col = Type, group = group)) +
geom_point() + geom_line() +
scale_color_manual(values = c("red", "blue", "gray")) +
labs(x = "", y = "", title = "동별 부양비 및 노령화 지수") +
theme(legend.position = "bottom",
axis.text.x = element_text(angle = 45, hjust = 1),
axis.ticks = element_blank(),
plot.background = element_rect(fill = "white"),
panel.background = element_rect(fill = "white"),
panel.grid.major = element_line(colour = "gray", size = 0.1),
panel.grid.minor = element_blank(),
plot.title = element_text(hjust = 0.5, face = 'bold'))
ggplotly(p) %>%
layout(legend = list(orientation = "h"))
노령화 지수는 정릉3동에서 가장 높게 나타나고, 길음1동에서 가장 낮게 나타난다. 또한 노년부양비는 장위2동이 가장 높게 나타나고 유년부양비는 길음1동에서 가장 높게 나타난다.
노령화지수(ageing index, 老齡化指數)는 유소년층 인구(0~14세)에 대한 노년층 인구(65세 이상)의 비율이다. 한경연이 OECD 통계를 분석한 결과 급속한 고령화로 2020년 현재 OECD 29위 수준인 한국의 고령인구 비율(15.7%)은 2041년 33.4%로 증가하고, 2048년 37.4%로 세계에서 가장 높은 수준이 될 것으로 전망된다. 또 현재 한국의 노인빈곤율은 미국(23.1%), 일본(19.6%), 영국(14.9%), 독일(10.2%), 프랑스(4.1%)보다 압도적으로 높다.
OECD국가 중 한국은 노인빈곤율도 가장 높은 수준이다. 2018년 기준, 한국의 공적·사적 연금 소득대체율은 43.4%로 은퇴 전 평균소득의 절반에도 못 미쳤다. 반면 G5국가들은 평균 69.6%에 달했다. 또한 G5국가들은 공적연금을 한국에 비해 ‘더 내고 더 늦게 받는’ 형태로 운영하고 있는데 G5국가들의 보험료율은 평균 20.5%로 한국(9.0%)의 2배가 넘는 수준이다. 또 G5국가들은 연금수급 개시연령을 현재 65~67세 사이에서 67~75세까지 높이려는 계획이 있는 것으로 조사됐다. 한국은 G5국가들에 비해 고령층 취업환경도 미흡한 것으로 나타난다. https://www.asiae.co.kr/article/2021021710424442532
과거의 인구특성들을 활용하여, 앞으로 미래의 인구특성이 어떻게 될 지를 판단해볼 수 있다. 위의 2020년 기준뿐만 아니라 성북구 전체의 노인인구의 변화 및 노령화 지수의 변화를 살펴보도록 한다.
먼저, 성북구 전체 연령별 인구변화를 알아보자.
df.2014 <- as.data.frame(data.table::fread("2014.txt", encoding = "UTF-8"))
df.2014 <- df.2014[df.2014$자치구 == "성북구",][2,][,-c(2, 3, 4, 5)]
df.2014[,-1] <- sapply(df.2014[,-1], function(x) as.numeric(gsub(",","",x)))
df.2015 <- as.data.frame(data.table::fread("2015.txt", encoding = "UTF-8"))
df.2015 <- df.2015[df.2015$자치구 == "성북구",][2,][,-c(2, 3, 4, 5)]
df.2015[,-1] <- sapply(df.2015[,-1], function(x) as.numeric(gsub(",","",x)))
df.2016 <- as.data.frame(data.table::fread("2016.txt", encoding = "UTF-8"))
df.2016 <- df.2016[df.2016$자치구 == "성북구",][2,][,-c(2, 3, 4, 5)]
df.2016[,-1] <- sapply(df.2016[,-1], function(x) as.numeric(gsub(",","",x)))
df.2017 <- as.data.frame(data.table::fread("2017.txt", encoding = "UTF-8"))
df.2017 <- df.2017[df.2017$자치구 == "성북구",][2,][,-c(2, 3, 4, 5)]
df.2017[,-1] <- sapply(df.2017[,-1], function(x) as.numeric(gsub(",","",x)))
df.2018 <- as.data.frame(data.table::fread("2018.txt", encoding = "UTF-8"))
df.2018 <- df.2018[df.2018$자치구 == "성북구",][2,][,-c(2, 3, 4, 5)]
df.2018[,-1] <- sapply(df.2018[,-1], function(x) as.numeric(gsub(",","",x)))
df.2019 <- as.data.frame(data.table::fread("2019.txt", encoding = "UTF-8"))
df.2019 <- df.2019[df.2019$자치구 == "성북구",][2,][,-c(2, 3, 4, 5)]
df.2019[,-1] <- sapply(df.2019[,-1], function(x) as.numeric(gsub(",","",x)))
df.2020 <- as.data.frame(data.table::fread("2020.txt", encoding = "UTF-8"))
df.2020 <- df.2020[df.2020$자치구 == "성북구",][2,][,-c(2, 3, 4, 5)]
df.2020[,-1] <- sapply(df.2020[,-1], function(x) as.numeric(gsub(",","",x)))
age.df <- rbind.data.frame(df.2014,
setNames(df.2015, colnames(df.2014)),
setNames(df.2016, colnames(df.2014)),
setNames(df.2017, colnames(df.2014)),
setNames(df.2018, colnames(df.2014)),
setNames(df.2019, colnames(df.2014)),
setNames(df.2020, colnames(df.2014)))
age.df$`0~14세` <- age.df$`0~4세` + age.df$`5~9세` + age.df$`10~14세`
age.df$`15~29세` <- age.df$`15~19세` + age.df$`20~24세` + age.df$`25~29세`
age.df$`30~44세` <- age.df$`30~34세` + age.df$`35~39세` + age.df$`40~44세`
age.df$`45~59세` <- age.df$`45~49세` + age.df$`50~54세` + age.df$`55~59세` + age.df$`60~64세`
age.df$`60세이상` <- age.df$`65~69세` + age.df$`70~74세` + age.df$`75~79세` + age.df$`80~84세` +
age.df$`85~89세` + age.df$`90~94세` + age.df$`95~99세` + age.df$`100세 이상`
age.df <- subset(age.df, select = c(기간, `0~14세`, `15~29세`, `30~44세`, `45~59세`, `60세이상`))
adj.age.df <- reshape::melt(age.df, "기간")
colnames(adj.age.df) <- c("Year", "Type", "Value")
p <- ggplot(adj.age.df, aes(x = Year,
y = Value,
fill = Type)) +
geom_bar(stat = "identity", position = "dodge") +
coord_flip() +
theme(legend.position = "") +
labs(x = "", y = "", title = "연령별 인구")
ggplotly(p)
stat.age.df <- rbind.data.frame(df.2014,
setNames(df.2015, colnames(df.2014)),
setNames(df.2016, colnames(df.2014)),
setNames(df.2017, colnames(df.2014)),
setNames(df.2018, colnames(df.2014)),
setNames(df.2019, colnames(df.2014)),
setNames(df.2020, colnames(df.2014)))
stat.age.df$child <- stat.age.df$`0~4세` + stat.age.df$`5~9세` + stat.age.df$`10~14세`
stat.age.df$normal <- stat.age.df$`15~19세` + stat.age.df$`20~24세` + stat.age.df$`25~29세` + stat.age.df$`30~34세` + stat.age.df$`35~39세`+ stat.age.df$`40~44세` + stat.age.df$`45~49세` + stat.age.df$`50~54세` + stat.age.df$`55~59세` + stat.age.df$`60~64세`
stat.age.df$elder <- stat.age.df$`65~69세` + stat.age.df$`70~74세` + stat.age.df$`75~79세` + stat.age.df$`80~84세` + stat.age.df$`85~89세` + stat.age.df$`90~94세` + stat.age.df$`95~99세` + stat.age.df$`100세 이상`
stat.age.df$stat <- stat.age.df$elder/stat.age.df$child*100
p <- ggplot(stat.age.df, aes(x = 기간,
y = stat)) +
geom_bar(stat = "identity", fill = "dodgerblue") +
coord_flip() +
labs(x = "", y = "", title = "년도별 노령화 지수") +
theme(legend.position = "",
axis.text.x = element_text(angle = 45, hjust = 1),
axis.ticks = element_blank(),
plot.background = element_rect(fill = "white"),
panel.background = element_rect(fill = "white"),
panel.grid.major = element_line(colour = "gray", size = 0.1),
panel.grid.minor = element_blank(),
plot.title = element_text(hjust = 0.5, face = 'bold'))
ggplotly(p)
년도별로 노령화 지수가 상승하는 것을 확인할 수 있으며 앞으로의 연령대가 점차 높아지고 있고 45~59세의 인구비율이 많은 것으로 보아, 앞으로도 노령화 지수가 상승할 것으로 예상한다.
다음으로 성북구 노령화 지수에 따른 변화를 살펴보자.
index <- seq(1, 90, by = 3) + 3
df.2014 <- as.data.frame(data.table::fread("2014.txt", encoding = "UTF-8"))
df.2014 <- na.omit(df.2014[df.2014$자치구 == "성북구",][index,])[,-c(1, 2, 4, 5)]
df.2014[,-1] <- sapply(df.2014[,-1], function(x) as.numeric(gsub(",","",x)))
df.2014 <- df.2014 %>%
summarise("ADM_DR_NM" = 동,
"y" = c(`65~69세` + `70~74세` + `75~79세` + `80~84세` +
`85~89세` + `90~94세` + `95~99세` + `100세 이상`)/c(`0~4세` + `5~9세` + `10~14세`)*100)
df.2015 <- as.data.frame(data.table::fread("2015.txt", encoding = "UTF-8"))
df.2015 <- na.omit(df.2015[df.2015$자치구 == "성북구",][index,])[,-c(1, 2, 4, 5)]
df.2015[,-1] <- sapply(df.2015[,-1], function(x) as.numeric(gsub(",","",x)))
df.2015 <- df.2015 %>%
summarise("ADM_DR_NM" = 행정동,
"y" = c(`65~69세` + `70~74세` + `75~79세` + `80~84세` +
`85~89세` + `90~94세` + `95~99세` + `100세 이상`)/c(`0~4세` + `5~9세` + `10~14세`)*100)
df.2016 <- as.data.frame(data.table::fread("2016.txt", encoding = "UTF-8"))
df.2016 <- na.omit(df.2016[df.2016$자치구 == "성북구",][index,])[,-c(1, 2, 4, 5)]
df.2016[,-1] <- sapply(df.2016[,-1], function(x) as.numeric(gsub(",","",x)))
df.2016 <- df.2016 %>%
summarise("ADM_DR_NM" = 행정동,
"y" = c(`65~69세` + `70~74세` + `75~79세` + `80~84세` +
`85~89세` + `90~94세` + `95~99세` + `100세 이상`)/c(`0~4세` + `5~9세` + `10~14세`)*100)
df.2017 <- as.data.frame(data.table::fread("2017.txt", encoding = "UTF-8"))
df.2017 <- na.omit(df.2017[df.2017$자치구 == "성북구",][index,])[,-c(1, 2, 4, 5)]
df.2017[,-1] <- sapply(df.2017[,-1], function(x) as.numeric(gsub(",","",x)))
df.2017 <- df.2017 %>%
summarise("ADM_DR_NM" = 행정동,
"y" = c(`65~69세` + `70~74세` + `75~79세` + `80~84세` +
`85~89세` + `90~94세` + `95~99세` + `100세 이상`)/c(`0~4세` + `5~9세` + `10~14세`)*100)
df.2018 <- as.data.frame(data.table::fread("2018.txt", encoding = "UTF-8"))
df.2018 <- na.omit(df.2018[df.2018$자치구 == "성북구",][index,])[,-c(1, 2, 4, 5)]
df.2018[,-1] <- sapply(df.2018[,-1], function(x) as.numeric(gsub(",","",x)))
df.2018 <- df.2018 %>%
summarise("ADM_DR_NM" = 행정동,
"y" = c(`65~69세` + `70~74세` + `75~79세` + `80~84세` +
`85~89세` + `90~94세` + `95~99세` + `100세 이상`)/c(`0~4세` + `5~9세` + `10~14세`)*100)
df.2019 <- as.data.frame(data.table::fread("2019.txt", encoding = "UTF-8"))
df.2019 <- na.omit(df.2019[df.2019$자치구 == "성북구",][index,])[,-c(1, 2, 4, 5)]
df.2019[,-1] <- sapply(df.2019[,-1], function(x) as.numeric(gsub(",","",x)))
df.2019 <- df.2019 %>%
summarise("ADM_DR_NM" = 행정동,
"y" = c(`65~69세` + `70~74세` + `75~79세` + `80~84세` +
`85~89세` + `90~94세` + `95~99세` + `100세 이상`)/c(`0~4세` + `5~9세` + `10~14세`)*100)
df.2020 <- as.data.frame(data.table::fread("2020.txt", encoding = "UTF-8"))
df.2020 <- na.omit(df.2020[df.2020$자치구 == "성북구",][index,])[,-c(1, 2, 4, 5)]
df.2020[,-1] <- sapply(df.2020[,-1], function(x) as.numeric(gsub(",","",x)))
df.2020 <- df.2020 %>%
summarise("ADM_DR_NM" = 동,
"y" = c(`65~69세` + `70~74세` + `75~79세` + `80~84세` +
`85~89세` + `90~94세` + `95~99세` + `100세 이상+`)/c(`0~4세` + `5~9세` + `10~14세`)*100)
region.df1 <- left_join(sungbukgu.dong, df.2015, by = "ADM_DR_NM")
region.df2 <- left_join(sungbukgu.dong, df.2016, by = "ADM_DR_NM")
region.df3 <- left_join(sungbukgu.dong, df.2017, by = "ADM_DR_NM")
region.df4 <- left_join(sungbukgu.dong, df.2018, by = "ADM_DR_NM")
region.df5 <- left_join(sungbukgu.dong, df.2019, by = "ADM_DR_NM")
region.df6 <- left_join(sungbukgu.dong, df.2020, by = "ADM_DR_NM")
p1 <- Area +
geom_polygon(data = region.df1,
aes(group = group, fill = y), color = "black", size = 0.02) +
scale_fill_gradient(low = "yellow", high = "brown", na.value = NA) +
annotate("text",
x = as.numeric(region.text$x),
y = as.numeric(region.text$y),
label = as.character(region.text$ADM_DR_NM),
size = 2, col = "black") +
theme(legend.position = "none") +
geom_point(data = na.omit(point.df),
aes(x = 경도, y = 위도), col = "red", size = 2) +
labs(title = "2015 성북구 노인 및 복지시설")
p2 <- Area +
geom_polygon(data = region.df2,
aes(group = group, fill = y), color = "black", size = 0.02) +
scale_fill_gradient(low = "yellow", high = "brown", na.value = NA) +
annotate("text",
x = as.numeric(region.text$x),
y = as.numeric(region.text$y),
label = as.character(region.text$ADM_DR_NM),
size = 2, col = "black") +
theme(legend.position = "none") +
geom_point(data = na.omit(point.df),
aes(x = 경도, y = 위도), col = "red", size = 2) +
labs(title = "2016 성북구 노인 및 복지시설")
p3 <- Area +
geom_polygon(data = region.df3,
aes(group = group, fill = y), color = "black", size = 0.02) +
scale_fill_gradient(low = "yellow", high = "brown", na.value = NA) +
annotate("text",
x = as.numeric(region.text$x),
y = as.numeric(region.text$y),
label = as.character(region.text$ADM_DR_NM),
size = 2, col = "black") +
theme(legend.position = "none") +
geom_point(data = na.omit(point.df),
aes(x = 경도, y = 위도), col = "red", size = 2) +
labs(title = "2017 성북구 노인 및 복지시설")
p4 <- Area +
geom_polygon(data = region.df4,
aes(group = group, fill = y), color = "black", size = 0.02) +
scale_fill_gradient(low = "yellow", high = "brown", na.value = NA) +
annotate("text",
x = as.numeric(region.text$x),
y = as.numeric(region.text$y),
label = as.character(region.text$ADM_DR_NM),
size = 2, col = "black") +
theme(legend.position = "none") +
geom_point(data = na.omit(point.df),
aes(x = 경도, y = 위도), col = "red", size = 2) +
labs(title = "2018 성북구 노인 및 복지시설")
p5 <- Area +
geom_polygon(data = region.df5,
aes(group = group, fill = y), color = "black", size = 0.02) +
scale_fill_gradient(low = "yellow", high = "brown", na.value = NA) +
annotate("text",
x = as.numeric(region.text$x),
y = as.numeric(region.text$y),
label = as.character(region.text$ADM_DR_NM),
size = 2, col = "black") +
theme(legend.position = "none") +
geom_point(data = na.omit(point.df),
aes(x = 경도, y = 위도), col = "red", size = 2) +
labs(title = "2019 성북구 노인 및 복지시설")
p6 <- Area +
geom_polygon(data = region.df6,
aes(group = group, fill = y), color = "black", size = 0.02) +
scale_fill_gradient(low = "yellow", high = "brown", na.value = NA) +
annotate("text",
x = as.numeric(region.text$x),
y = as.numeric(region.text$y),
label = as.character(region.text$ADM_DR_NM),
size = 2, col = "black") +
theme(legend.position = "none") +
geom_point(data = na.omit(point.df),
aes(x = 경도, y = 위도), col = "red", size = 2) +
labs(title = "2020 성북구 노인 및 복지시설")
grid.arrange(p1, p2, p3,
p4, p5, p6, ncol = 3)
2015년 장위3동의 노인인구 수에 비해 2020년의 장위3동의 노인인구 수를 보면 줄어든 것을 알 수 있다. 반면에 복지시설은 큰 변화가 없다.
우리나라의 고령화 속도가 OECD평균보다 2배 가까이 빠르고 노인빈곤율도 가장 높으므로 이에 맞는 복지 시설과 제도가 필요하다. 따라서 성북구에서는 노인인구가 많은 지역에 복지시설을 더 늘릴 필요가 있다. 또한 한국은 노인빈곤율을 해결하기 위해 G5국가들과 같이 직무·성과 위주의 임금체계로 바꾸고 고령자들에게 양질의 민간 일자리를 제공할 수 있는 환경을 갖출 필요가 있다.
with other GHS students, Lecturer(Wooyoung, Shin)
Auguie, Baptiste. 2017. GridExtra: Miscellaneous Functions for "Grid" Graphics. https://CRAN.R-project.org/package=gridExtra.
Epskamp, Sacha, Angélique O. J. Cramer, Lourens J. Waldorp, Verena D. Schmittmann, and Denny Borsboom. 2012. “qgraph: Network Visualizations of Relationships in Psychometric Data.” Journal of Statistical Software 48 (4): 1–18.
Feinerer, Ingo, Kurt Hornik, and David Meyer. 2008. “Text Mining Infrastructure in R.” Journal of Statistical Software 25 (5): 1–54. https://www.jstatsoft.org/v25/i05/.
Fellows, Ian. 2018. Wordcloud: Word Clouds. https://CRAN.R-project.org/package=wordcloud.
Jeon, Heewon. 2016. KoNLP: Korean Nlp Package. https://CRAN.R-project.org/package=KoNLP.
Sievert, Carson. 2020. Interactive Web-Based Data Visualization with R, Plotly, and Shiny. Chapman; Hall/CRC. https://plotly-r.com.
Temple Lang, Duncan. 2020. XML: Tools for Parsing and Generating Xml Within R and S-Plus. https://CRAN.R-project.org/package=XML.
Wickham, Hadley. 2016. Ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York. https://ggplot2.tidyverse.org.
———. 2019. Stringr: Simple, Consistent Wrappers for Common String Operations. https://CRAN.R-project.org/package=stringr.
Wickham, Hadley, Romain Francois, Lionel Henry, and Kirill Muller. 2021. Dplyr: A Grammar of Data Manipulation. https://CRAN.R-project.org/package=dplyr.